%% @author me
%% @doc @todo Add description to my_module.


-module(my_module).

%% ====================================================================
%% API functions
%% ====================================================================
-export([pie/0,print/1,either_or_both/2,fun1/0,sum/1,do_sum/1,rev/1]).

pie()-> 3.1415.
print(Term) ->
	io:format("the value of Term is:~w~n",[Term]).

either_or_both(true,B) when is_boolean(B) ->
	true;
either_or_both(A,true) when is_boolean(A) ->
	true;
either_or_both(false,false)->false.

fun1() -> fun() -> 0 end .

sum(0) -> 0;
sum(N) when N >0 -> sum(N-1) + N.

do_sum(N) -> do_sum(N,0).
do_sum(0,Total) -> Total;
do_sum(N,Total) -> do_sum(N-1,Total+N).
%% ====================================================================
%% Internal functions
%% ====================================================================
rev([A| TheRest]) ->rev(TheRest) ++ [A];
rev([]) -> [].


